/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sadfinanceiro.model;

import java.math.BigDecimal;
import sadfinanceiro.Cenarios;

/**
 *
 * @author Felipe
 */
public class Investimento {

    private BigDecimal capitalInicial;
    private BigDecimal rentabilidade;
    private Integer periodoAplicacao;
    private BigDecimal valorReforco;
    private BigDecimal valorFuturo;

    public Investimento() {
        /*capitalInicial = BigDecimal.ZERO;
        rentabilidade = BigDecimal.ZERO;
        periodoAplicacao = 0;
        valorReforco = BigDecimal.ZERO;
        valorFuturo = BigDecimal.ZERO;*/
    }


    public Investimento(BigDecimal capitalInicial, BigDecimal percentualJuros, Integer periodoAplicacao, BigDecimal valorReforco, BigDecimal valorFuturo) {
        this.capitalInicial = capitalInicial;
        BigDecimal juros = percentualJuros.divide(new BigDecimal(100)).add(BigDecimal.ONE);
        this.rentabilidade = juros;
        this.periodoAplicacao = periodoAplicacao;
        this.valorReforco = valorReforco;
        this.valorFuturo = valorFuturo;
    }

    /**
     * @return the capitalInicial
     */
    public BigDecimal getCapitalInicial() {
        return capitalInicial;
    }

    /**
     * @param capitalInicial the capitalInicial to set
     */
    public void setCapitalInicial(BigDecimal capitalInicial) {
        this.capitalInicial = capitalInicial;
    }

    /**
     * @return the percentualJuros
     */
    public BigDecimal getRentabilidade() {
        return rentabilidade;
    }

    /**
     * @param percentualJuros the percentualJuros to set
     */
    public void setRentabilidade(BigDecimal rentabilidade) {
        //BigDecimal juros = rentabilidade.divide(new BigDecimal(100)).add(BigDecimal.ONE);
        this.rentabilidade = rentabilidade;
    }

    /**
     * @return the periodoAplicacao
     */
    public Integer getPeriodoAplicacao() {
        return periodoAplicacao;
    }

    /**
     * @param periodoAplicacao the periodoAplicacao to set
     */
    public void setPeriodoAplicacao(Integer periodoAplicacao) {
        this.periodoAplicacao = periodoAplicacao;
    }

    /**
     * @return the valorReforco
     */
    public BigDecimal getValorReforco() {
        return valorReforco;
    }

    /**
     * @param valorReforco the valorReforco to set
     */
    public void setValorReforco(BigDecimal valorReforco) {
        this.valorReforco = valorReforco;
    }

    /**
     * @return the valorFuturo
     */
    public BigDecimal getValorFuturo() {
        return valorFuturo;
    }

    /**
     * @param valorFuturo the valorFuturo to set
     */
    public void setValorFuturo(BigDecimal valorFuturo) {
        this.valorFuturo = valorFuturo;
    }

    public boolean isInvestimentoValido() {
        boolean valida = false;
        if (this.capitalInicial!=null
                && this.periodoAplicacao!=null
                && this.rentabilidade!=null
                && this.valorFuturo!=null
                && this.valorReforco==null) {
                valida = true;
        }else if (this.capitalInicial!=null
                && this.periodoAplicacao!=null
                && this.rentabilidade!=null
                && this.valorFuturo==null
                && this.valorReforco!=null) {
                valida = true;
        }else if (this.capitalInicial!=null
                && this.periodoAplicacao!=null
                && this.rentabilidade==null
                && this.valorFuturo!=null
                && this.valorReforco!=null) {
                valida = true;
        }else if (this.capitalInicial!=null
                && this.periodoAplicacao==null
                && this.rentabilidade!=null
                && this.valorFuturo!=null
                && this.valorReforco!=null) {
                valida = true;
        }else if (this.capitalInicial==null
                && this.periodoAplicacao!=null
                && this.rentabilidade!=null
                && this.valorFuturo!=null
                && this.valorReforco!=null) {
                valida = true;
        }
        return valida;
    }

    public Cenarios toCenario() {
        Cenarios c = new Cenarios();
        c.setCapitalinicial(this.capitalInicial.doubleValue());
        c.setDatasimulacao(new java.util.Date());
        c.setPrazo(this.periodoAplicacao.shortValue());
        c.setReforcomensal(this.valorReforco.doubleValue());
        c.setRentabilidade(this.rentabilidade.doubleValue());
        c.setValorfuturo(this.valorFuturo.doubleValue());
        return c;
    }
}
